const router = require('express').Router()
const userModel = require('../../models/userModel')
const aes = require('../../common/aes')
const Jwt = require('../../common/jwt')

// 是否注册账号(微信)
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： openid
router.post('/iswxregister', async (req,res,next)=> {
    // 解构赋值
    let {openid} = req.body;
    if(openid) {
        await userModel.iswxregister(openid)
        .then(
             content =>{
                res.send(content)
             },
             err=> {
                res.send(err)
             }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 注册账号(微信)
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： user_name,user_email,user_phone,user_pwd,user_create_time
router.post('/wxregister', async (req,res,next)=> {
    // 解构赋值
    let {user_name,user_email,user_phone,user_pwd,openid,user_imgUrl} = req.body;
    if(user_name && user_email &&  user_phone &&  user_pwd && user_imgUrl) {
        let date = new Date();
        let user_create_time = date.toLocaleDateString() + " " + (date.toLocaleTimeString());
        // console.log(user_create_time)        
        let user_password = aes.aesEncrypt(user_pwd);
        await userModel.wxregister(user_name,user_email,user_phone,user_password,user_create_time,openid,user_imgUrl)
        .then(
             content =>{
                res.send(content)
             },
             err=> {
                res.send(err)
             }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 登录账号
// URL: /api/user/login
// 示例地址: http://localhost:3000/api/user/login
// 方式： post
// 参数： user_phone,user_pwd
router.post('/wxlogin', async (req,res)=> {
    let {user_phone,user_pwd} = req.body;
    if(user_phone && user_pwd){
        await userModel.wxlogin(user_phone)
        .then(
            data => {
                // 取出加密的user_pwd
                if(data.user_pwd) {
                    // console.log({x:data.user_pwd})
                    // console.log({user_pwd})
                    // 获取用户id
                    let id = data.id;
                    let token;
                    if(id) {
                        let jwt = new Jwt(id)
                        token = jwt.getToken()
                    }
                    // console.log("生成的token:",jwt.getToken());
                    // 解密
                    let bool = aes.aesDecrypt(user_pwd , data.user_pwd)
                    // console.log({bool})
                    if(bool){
                        res.send({
                            code: 200,
                            msg: "微信端登录成功",
                            login: bool,
                            user_phone,
                            token,
                            user_name: data.user_name,
                            user_imgUrl: data.user_imgUrl,
                        })
                    }
                    else {
                        res.send({
                            code: -1,
                            msg: "微信端登录失败,账号或密码错误",

                        })
                    }
                }
                else {
                    res.send({
                        code: 404,
                        msg:"该账号不存在"
                    })
                }
            },
            err=> {
                res.send(err)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
})

// 获取账号信息
// URL: /api/user/info
// 示例地址: http://localhost:3000/api/user/info
// 方式： post
// 参数： token user_phone
router.post('/wxinfo', async (req,res)=> {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    let user_phone = req.body.user_phone;
    let result = new Jwt(token).verifyToken()
    if(result.code === 200){
        // 登录有效
        // 用户id
        let id = result.info.data;
        // console.log({id})
        await userModel.wxinfo(id,user_phone)
        .then(
            content=> {
                res.send(content)
            },
            err=>{
                res.send(err);
            }
        )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }
    
})



// 注册账号
// URL: /api/user/register
// 示例地址: http://localhost:3000/api/user/register
// 方式： post
// 参数： user_name,user_email,user_phone,user_pwd,user_create_time
router.post('/register', async (req,res,next)=> {
    // 解构赋值
    let {user_name,user_email,user_phone,user_pwd} = req.body;
    if(user_name && user_email &&  user_phone &&  user_pwd) {
        let date = new Date();
        let user_create_time = date.toLocaleDateString() + " " + (date.toLocaleTimeString());
        // console.log(user_create_time)        
        let user_password = aes.aesEncrypt(user_pwd);
        await userModel.register(user_name,user_email,user_phone,user_password,user_create_time)
        .then(
             content =>{
                res.send(content)
             },
             err=> {
                res.send(err)
             }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
    next();
})

// 登录账号
// URL: /api/user/login
// 示例地址: http://localhost:3000/api/user/login
// 方式： post
// 参数： user_email,user_pwd
router.post('/login', async (req,res)=> {
    let {user_email,user_pwd} = req.body;
    if(user_email && user_pwd){
        await userModel.login(user_email)
        .then(
            data => {
                // 取出加密的user_pwd
                if(data.user_pwd) {
                    // console.log({x:data.user_pwd})
                    // console.log({user_pwd})
                    // 获取用户id
                    let id = data.id;
                    let token;
                    if(id) {
                        let jwt = new Jwt(id)
                        token = jwt.getToken()
                    }
                  
                    // console.log("生成的token:",jwt.getToken());

                    // 解密
                    let bool = aes.aesDecrypt(user_pwd , data.user_pwd)
                    // console.log({bool})
                    if(bool){
                        res.send({
                            code: 200,
                            msg: "登录成功",
                            login: bool,
                            user_email,
                            token
                        })
                    }
                    else {
                        res.send({
                            code: -1,
                            msg: "登录失败,账号或密码错误",

                        })
                    }
                }
                else {
                    res.send({
                        code: 404,
                        msg:"该账号不存在"
                    })
                }
            },
            err=> {
                res.send(err)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数。"
        })
    }
})


// 获取账号信息
// URL: /api/user/info
// 示例地址: http://localhost:3000/api/user/info
// 方式： post
// 参数： token user_email
router.post('/info', async (req,res)=> {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    // let user_email = req.body.user_email;
    let result = new Jwt(token).verifyToken()
    if(result.code === 200){
        // 登录有效
        // 用户id
        let id = result.info.data;
        console.log({id})
        await userModel.info(id)
        .then(
            content=> {
                res.send(content)
            },
            err=>{
                res.send(err);
            }
        )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }
    
})

// 修改资料
router.post('/modify', async (req,res)=> {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    let {user_addr,user_birthday,user_intro,user_sex} = req.body;
    let result = new Jwt(token).verifyToken()
    if(result.code === 200){
        // 登录有效
        // 用户id
        let id = result.info.data;
        // console.log({id})
        await userModel.modify(id,user_addr,user_birthday,user_intro,user_sex)
        .then(
            content=> {
                res.send(content)
            },
            err=>{
                res.send(err);
            }
        )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }
})

// 删除账号
router.post('/remove', async (req,res)=> {
    // 获取token信息（临时身份，令牌）
    let token = req.headers.token || req.body.token;
    // let user_email = req.body.user_email;
    let result = new Jwt(token).verifyToken()
    if(result.code === 200){
        // 登录有效
        // 用户id
        let id = result.info.data;
        console.log({id})
        await userModel.remove(id)
        .then(
            content=> {
                res.send(content)
            },
            err=>{
                res.send(err);
            }
        )
    }
    else {
        // 登录失效
        res.send({
            code: -1,
            msg: "登录状态失效,请重新登录"
        })
    }
})

// 获取账号信息
// 参数：user_id
router.post('/img', async (req,res)=> {
    // 获取token信息（临时身份，令牌）
    // let token = req.headers.token || req.body.token;
    let user_id = req.body.user_id;
    await userModel.getUserimgUrl(user_id)
        .then(
            content=> {
                res.send(content)
            },
            err=>{
                res.send(err);
            }
        )
    // let result = new Jwt(token).verifyToken()
    // if(result.code === 200){
    //     // 登录有效
    //     // 用户id
    //     // let id = result.info.data;
    //     console.log({id})
    //     // await userModel.getUserimgUrl(id)
    //     // .then(
    //     //     content=> {
    //     //         res.send(content)
    //     //     },
    //     //     err=>{
    //     //         res.send(err);
    //     //     }
    //     // )
    // }
    // else {
    //     // 登录失效
    //     res.send({
    //         code: -1,
    //         msg: "登录状态失效,请重新登录"
    //     })
    // }
})


// 修改用户资料
// token user_name
router.post('/modify', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        let { user_name } = req.body;
        if (user_sex && user_age && user_address) {
            // 登录状态
            let user_id = result.info.data;//用户id
            // 修改用户信息
            await userModel.modify(user_id, user_name).then(
                (content) => {
                    // 响应数据给前端
                    res.send(content)
                },
                (err) => {
                    res.send(err)
                }
            )
        }
        else {
            res.send({
                code: -1,
                msg: '缺少参数。'
            })
        }

    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})

module.exports = router;